Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Corrections to text and code samples #23

Open
24 of 70 tasks
gbiggs opened this issue May 13, 2016 · 1 comment
Open
24 of 70 tasks

Corrections to text and code samples #23

gbiggs opened this issue May 13, 2016 · 1 comment

Comments

@gbiggs
Copy link
Member

gbiggs commented May 13, 2016

  • Chapter 6, Robonaut 2 (page 90): Missing closing bracket after "Figure 6-3".
  • Chapter 7, all examples: The examples in this chapter vary by whether they create publishers and subscribers before or after the call to init_node(). All the previous chapters consistently create the publishers and subscribers after calling init_node(). This may be confusing for some readers.
  • Chapter 7, Creating a package (page 100): The example title doesn't indicate the file name (unlike example 2). For a reader typing the code themselves, you are relying on them reading past the example before they start creating files and entering source code to get the same file name as you. It's also harder to guess which source file in the provided source matches the example when the file name is not given in the example title (this goes for all examples).
  • Chapter 7, Creating a package (page 100): "W must include these": Does 'W' refer to the wanderbot package?
  • Chapter 7, Reading sensor data (page 106): The text says that the simulation will keep running while models are being dragged and rotated, and so the output range values will continue to be updated. This wasn't exactly correct for me; when I dragged or rotated the simulated turtlebot, Gazebo stopped publishing range data until I released the mouse, even though the simulation kept running (or, at least, the simulated clock kept going up).
  • Chapter 8, Example 8-5 (page 123): There is an error in this example. At the top, a global variable "g_last_send_time" is created (and given the value None). However, the rest of the code refers to the global variable "g_last_twist_send_time".
  • Chapter 8, Example 8-5 (page 123): The global variable "g_last_twist" is declared in the function keys_cb(), but not used.
  • Chapter 8, Velocity ramps (page 124): The command to launch the keys_to_twist_with_ramps.py node is missing a space between two of the parameters.
  • Chapter 8, rviz (page 127): The text instructs the reader to select the cell to the right of "Fixed Frame", but because there is an error regarding the fixed frame (map doesn't exist with the Turtlebot sim at its defaults), there are two cells named "Fixed Frame". The text should specify that the user should work with the one under "Global Options". It would also be worth adding a note about the error in the global status entries and confirming that it has gone green when the reader selects a fixed frame correctly.
  • Chapter 9, Maps in ROS (page 136): "the length of each grid cell" -> "size" might be better than "length", since it's not a one-dimensional entity.
  • Chapter 9, Maps in ROS (page 137): Is it correct that the cell value thresholds are truncated (49.98 -> 49) rather than rounded (49.98 -> 50)? (Are they cast to an int? I've never really looked...)
  • Chapter 9, Building maps (page 141): The text instructs the reader to zoom out on the simulator (Stage) to see something like Figure 9-3, but Figure 9-3 shows rviz, not Stage.
  • Chapter 9, Starting a map server... (page 148): My Indigo install doesn't have a mapping package or a file called "willow.yaml". I also couldn't find any "willow.yaml" on the web except the online sources for the book (and in the rtm-ros-robotics repository, oddly). I do have "turtlebot_navigation/maps/willow-2010-02-18-0.10.yaml", which appears to be the same map as that shown in Figure 9-7, although it lacks the blacked-out room. If the reader is expected to use the map provided with the book, they should be instructed specifically to do so.
  • Chapter 10, What's going on behind the scenes (page 155): The text states that "rviz subscribes to a topic called initialpose" and then goes on to describe what amcl does. The first word should be "amcl", not "rviz" (rviz is publishing on that topic, not subscribing to it).
  • Chapter 11, Installing and running a simulated R2 (page 173): The robot_state_publisher looks like it was already running from the r2_gazebo.launch file; when I started it manually it complained about a new node registered with the same name.
  • Chapter 11, Installing and running a simulated R2 (page 174): What does "cd" mean?
  • Chapter 11, Examples 11-2, 11-4, 11-5 and 11-9: These samples don't use the random module, but they continue to import it.
  • Chapter 11, Moving R2 around a chessboard (page 178): The usage line in the example calls the file "r2_chessboard.py" but the example is titled "r2_chessboard_cli.py".
  • Chapter 11, Example 11-5: None of the imports from geometry_msgs are needed in this example.
  • Chapter 11, Example 11-5: This example doesn't have the moveit shutdown command, unlike the previous examples.
  • Chapter 12, Example 12-2: Missing space between the arguments on the first line of image_callback()
  • Chapter 12, Example 12-4: The values for the yellow filter in this example are different from those used in Example 12-3.
  • Chapter 12, Example 12-5: Missing blank line before image_callback() definition.
  • Chapter 13, Examples 13-2, 13-3 and 13-4: Missing space between "State," and "StateMachine". rospy is imported but not used.
  • Chapter 13, Summary (page 224): wiht -> with
  • Chapter 14, Stockroom simulation (page 226): The instructions for creating the package here are confusing. They imply that by making the directory and a package.xml, catkin will do the rest of the package initialisation automatically. When I followed the instructions as written, this didn't happen and catkin complained about missing CMakeLists.txt files. The instructions should stay consistent with what the reader has been taught so far and use catkin_create_pkg, then ask the reader to edit the package.xml template, rather than having them write one from scratch.
  • Chapter 14, Examples 14-2 and 14-3 (page 227): The model's name is different in these two sources. 14-3's name ("box") is also different from the model directory name.
  • Chapter 14, Example 14-3 (page 228): The model shown in Figure 14-1 and given by this source is different from the one produced by the online source. The figures need to be updated for the next edition of the book.
  • Chapter 14, Example 14-4 (page 231): The book doesn't actually say where to put the script, where to execute it, or where to put the generated files. I had to read the EmPy template samples to figure out that they go in a "tags" directory under the bin model. Looking at the online source wasn't enough help, as it only showed where to put the script, not where to execute it or put the results.
  • Chapter 14, Example 14-5 (page 232): This example lacks guidance on where to place the file or what to call it.
  • Chapter 14, Example 14-5 (page 232): The world name in the book is "stockroom", but in the online source, it is "aisle". (The file name in both is "aisle".)
  • Chapter 14, page 233: Missing '<' in explanation 10. It should be ''.
  • Chapter 14, Example 14-7 (page 234): The first collision is given the name 'visual'. Should this be 'collision'?
  • Chapter 14, Example 14-7 (page 235): The sizes for the walls give heights of 1 for all except the wall under the counter in the book, but the online source specifies 0.7 for all walls. The book's sizes look better and are probably more realistic.
  • Chapter 14, Example 14-8 (page 237): Guidance on where to put the file is missing. The reader is likely to guess "src/ under my package directory" based on the previous chapters, but the online source does not follow this convention.
  • Chapter 14, page 238: The reader gets to the end of creating their stockroom world without the book mentioning the need to download the product model from the online sources and put it in the correct place.
  • Chapter 14, page 239: Chapter 13 does not mention anything about building or using maps. The reference should probably point to chapter 10, which describes navigation and how it uses maps in detail.
  • Chapter 14, Driving to bins (page 240): The rosparam command should be setting "use_sim_time", not "use_time_time".
  • Chapter 14, Driving to bins (page 240): The extra parameter to gmapping, "_odom_frame:=odom_combined", does not appear to be necessary for Fetch. If it is provided, the tf tree goes wonky and gmapping fails to process any data.
  • Chapter 14, Driving to bins (page 241): The book does not instruct the reader to create the "initial_localization.py" script.
  • Chapter 14, Example 14-12 (page 242): Stray semi-colons at line ends.
  • Chapter 14, Example 14-15 (page 248): CollisionObject does not need to be imported.
  • Chapter 14, Example 14-15 (page 248): It is not clear who is supposed to be providing the /clear_octomap service (it apparently comes from MoveIt, which I don't have much experience with), but it isn't being provided by all the stuff launched so far. It turns out that the moveit.launch launch file needs to be started to get it, but the text does not instruct the reader to do so.
  • Chapter 14, Example 14-15 (page 249): Commented out rosservice call should be deleted?
  • Chapter 14, Example 14-16 (page 254): tf does not need to be imported.
  • Chapter 15, Example 15-1 (page 261): The API to access the sensor's value is not correct. The FakeSensor class does not expose the "value()" accessor of the ActualFakeSensor class. To make this example run, the value must be accessed as "sensor.sensor.value()" or the FakeSensor class needs an additional property to expose the value() method from its ActualFakeSensor member.
  • Chapter 15, Example 15-2 (page 263): This example has the same bug as 15-1: The necessary sensor API is not exposed by the FakeSensor class. I also got fun race conditions when I added the necessary API because the ActualFakeSensor instance is created when the thread starts. (It must be, of course, because of Qt.) The fake_sensor.py file needs a significant overhaul.
  • Chapter 15, Example 15-2 (page 263): The pub variable needs to be marked global to be accessible from the callback. Even better would be to create a closure, although that may be too complex for an example that is supposed to be teaching.
  • Chapter 15, Example 15-3 (page 265): Same API problem as the previous examples.
  • Chapter 15, Example 15-4 (page 266): The reader should have been told what package to put their nodes in (in this case, "stuff") to have their services be available properly.
  • Chapter 15, Example 15-4 (page 266): There is a name collision between the imported FakeSensor class and the imported FakeSensor service request.
  • Chapter 15, Designing the ROS wrapper (page 268): "For our fake sensor" -> "For our fake actuator"
  • Chapter 15, Example 15-6 (page 268): The package name for the services is "sensors". This doesn't match the previous package in this chapter ("stuff"). This isn't necessarily a bad thing, but the reader should be told what package to put their source in, for those who copy it by hand. For those who use the provided source, they will run into the same problem because the package in the provided source that the fake actuator stuff is placed in is also "stuff".
  • Chapter 15, Example 15-6 (page 269): Unnecessary semi-colon after break
  • Chapter 15, Example 15-6 (page 269): The node's name should probably be "fake_actuator" rather than "fake".
  • Chapter 15, Designing the ROS wrapper (page 270): The text states that the Light service and the action have been previously defined and discussed, but they have not. The Light service is defined/described lower down in Design 2, and the action is defined/described in Design 3.
  • Chapter 15, Example 15-6 (page 268): Bug in fake_actuator.py, line 47: change called method to "isChecked()".
  • Chapter 15, Example 15-6 (page 268): No GUI is displayed by the sample.
  • Chapter 16, Modelling the robot (page 282): The urdf_to_graphiz tool has moved to the liburdfdom-tools package (since Indego?). The text needs to be updated to mention this.
  • Chapter 16, Modelling the robot (page 284 bottom): "As you can already," -> "As you can already see," ?
  • Chapter 16, Modelling the robot (page 286): "read the URDF" -> "reads the URDF" (in 2 places)
  • Chapter 16, Example 16-3 (page 287): The material "black" is used here but not defined until Example 16-4. Not that you would notice, since an undefined material gets rendered as black anyway.
  • Chapter 18, Example 18-2 (page 325): The "silver" material is getting re-defined here. It was already defined in example 18-1.
  • Chapter 18, Simulation in Gazebo (page 330): "like a in rag doll" -> "like a rag doll"
  • Chapter 18, Configuring MoveIt (page 342): The file to create should be called "config/controllers.yaml".
  • Chapter 18, Using rviz to send goals (page 343): Funky text: "bring up rviz in a? with a? suitable configuration"
  • Chapter 21, Logger levels/Figure 21-1 (page 380): The reader will only see something like the window shown if they have a system running, which they have not been told to do. Perhaps provide a complete source listing for battery_monitor and have the reader run it? Then they can try rqt_console on page 381 easily, too.
  • Chapter 22, Finding and sharing code (page 404): Missing closing bracket in the second paragraph.
  • Chapter 23, catkin_make (page 408): The example directory listing should include a src/ directory for the packages, to match the description in the text.
  • Chapter 23, Example 23-5 (page 413): There are many errors in this example, beginning with a missing include for so strlen() can be used (perhaps req.words.length() would be better) and the variable "l" in the callback not having a type declaration.
@rpfly3
Copy link

rpfly3 commented Apr 15, 2018

  • Chapter 14: alias sb='source ~/ws/devel/setup.bash;
    export GAZEBO_MODEL_PATH=${HOME}/ws/src/stockroom_bot' --> alias sb='source ~/ws/devel/setup.bash;
    export GAZEBO_MODEL_PATH=${HOME}/ws/src/stockroom_bot\models' (page 226)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants