TurtleBot3 software and firmware update and 'waffle_pi'

Hello everyone :slight_smile:

I announce that TurtleBot3 is huge updated!!!
This update considered many issues and requests from users. We are sincerely thankful to them.
More interest makes more progress. If you have any issues or suggestions, please feel free to get issue ticket

Update lists

  1. Library for turtlebot3
  • turtlebot3_controller - include RC100(for remote control) library
  • turtlebot3_diagnosis - include diagnostic functions
  • turtlebot3_motor_driver - include DYNAMIXEL SDK
  • turtlebot3_sensor - include functions for IMU, battery, magnetic filed and analog Input
  1. Add Publisher
  • /version_info - Contains the hardware, firmware and software information
  • /battery_state - Contains battery voltage and status
  • /magnetic_field - Contains magnetic field information
  • /diagnostic - Contains self diagnostic information
  1. Add Subscriber
  • /sound - Output beep sound
  • /motor_power - Dynamixel torque on/off
  • /reset - Reset odometry and re-calibration IMU
  1. Add message
  • add Sound.msg
  1. Change USB Setting
  • Simple command makes USB setup
  1. Add diagnostic node
  • It shows state of IMU, motor, lidar, battery, button and version information
  1. Add Waffle PI
  • Now, we are preparing new version of TurtleBot3 called Waffle PI. Meet Waffle PI in Rviz and Gazebo before you get an it.

How to update

  1. Software (v 1.0.0)

Existing users need to download new version in master branch of turtlebot3 and turtlebot3_msgs

Direct download in repository turtlebot3, turtlebot3_msgs

or using command line

cd ~/catkin_ws/src sudo rm -rf turtlebot3/
$ git clone GitHub - ROBOTIS-GIT/turtlebot3: ROS packages for Turtlebot3

cd ~/catkin_ws/src sudo rm -rf turtlebot3_msgs/
$ git clone GitHub - ROBOTIS-GIT/turtlebot3_msgs: ROS msgs package for TurtleBot3

  1. Firmware

Open Arduino → Toos → Board: → Board Manager… → Update (v 1.0.15)

Best regards!


I assume the Waffle Pi is a lower-cost waffle with a Raspberry Pi instead of the Joule. This is great news!

Is there any progress on a Burger or Waffle version that comes with no sensors or compute boards, for those of us who have all that stuff already?

Hi @routiful thanks alot for the update.
i have a question… Do we need to update the OpenCr board? and How? i get “Checksum does not match” error . thanks alot… :smiley:

Hello :slight_smile:

You can follow below instruction

Open Arduino -> Toos -> Board: -> Board Manager… -> Update (v 1.0.15)

or you can find more detail in OpenCR Wiki


I am interested in using the new software update on my TB3 and thank you for these instructions. Are there also updates planned or available to the documentation to describe the ROS commands necessary to show the new Publisher /diagnostic, /battery_state information and to connect a speaker to the RasPi3 or OpenCR to hear the generated sounds? Ross

Hello @Red24dog :slight_smile:

We have a plan to be compatible with ROS2 though we don’t have any details.
We provide a TurtleBot3 Wiki and it will be added more information soon for these software updates.
Additionally, you don’t need to connect separate speaker due to OpenCR already has it :wink:


Darby, Following your good instructions and compiling the revised catkin_ws/src, I easily updated the ROS SBC TB3 and OpenCR software and very pleased that it all works well, including “rostopic echo /diagnostics” node that is very informative. I look forward to the new wiki to learn how to connect the new /sound Subscription that roswtf reports as unconnected. I note there is a reference to a Adafruit display driver in the TB3 github-Is that a future additional feature? A small request is make available the pdf version of the previous wiki.Thank you and your colleagues for their hard work and producing an excellent, fun and educational robot :).

I’m still getting a checksum mismatch. I upgraded to OpenCR 1.0.15 and also tried 1.0.16. I upgraded with turtlebot3.git and on turtlebot3_msg.git on both my RemotePC and TurtleBot.

  • I did a roscore on my RemotePC
  • a ssh into the TurtleBot
  • did a “roslaunch turtlebot3_bringup turtlebot3_core.launch” on the TurtleBot

This is the execution
$ roslaunch turtlebot3_bringup turtlebot3_core.launch
… logging to /home/eepp/.ros/log/5a7d18a4-0545-11e8-9b6b-080027c0cb1e/roslaun
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server



  • /rosdistro: kinetic
  • /rosversion: 1.12.12
  • /turtlebot3_core/baud: 115200
  • /turtlebot3_core/port: /dev/ttyACM0


  turtlebot3_core (rosserial_python/serial_node.py)


process[turtlebot3_core-1]: started with pid [3447]
[INFO] [1517266129.977476]: ROS Serial Python Node
[INFO] [1517266130.051262]: Connecting to /dev/ttyACM0 at 115200 baud
[ERROR] [1517266132.304481]: Creation of publisher failed: Checksum does not ma
tch: 427f77f85da38bc1aa3f65ffb673c94c,d537ed7b8d95065b6c83830430b93911
[INFO] [1517266132.362502]: Note: publish buffer size is 1024 bytes


Nice! we are preparing updated wiki including your requests.
Thanks you for your interest :slight_smile:

Hello @edcepp :slight_smile:

Have you set network config??
You can check how to config network btw RemotePC and TB3 on wiki

Best regards

ROS guys :slight_smile:

Thank you for your interest on TB3 ! (I am happy as if i get a sweet coffee)
But discourse.ros.org is not proper page to create issue :sweat_smile:

If you have any question for TB3, please use Github Issue or answer.ros.org.
You can meet me in there :rofl:



Thanks for your quick response. This is how I set it up

Remote PC

$ ifconfig
enp0s3 Link encap:Ethernet HWaddr 08:00:27:c0:cb:1e
inet addr: Bcast: Mask:

$ tail .bashrc
export PATH=$PATH:$HOME/tools/arduino-1.8.5


$ ifconfig
wlp1s0 Link encap:Ethernet HWaddr a0:c5:89:4b:3a:e3
inet addr: Bcast: Mask:

$ tail .bashrc
export TURTLEBOT3_MODEL=waffle


I followed the instructions in 7.1.5 for Porting OpenCR1.0 to Arduino IDE. I want to reason through my issue. I’m not familiar with Arduino checksum generation. I connected my OpenCR to my Remote PC. I ran the Arduino IDE from there and loaded the bootloader. So I assume I can load the OpenCR from any machine as long as I have the right bootloader version. Where and how are the checksums being generated and compared? Will I have the same bootloader checksum as everyone else in the world? If that is correct, someone should be able to tell me if I have the correct one and tell me which side is incorrect. If not correct, does the checksum depend on my hardware and/or software.


Hi Darby

Just wanted to confirm when you pointed to this article for updating, you meant: http://emanual.robotis.com/docs/en/parts/controller/opencr10/#enter-dfu-mode

Is it possible to update the board- manager as defined in the wiki using dfu-util?

Or you meant some other steps such as: http://emanual.robotis.com/docs/en/parts/controller/opencr10/#writing-bootloaderlinux

Can you please confirm?


Hi @tosandip :slight_smile:

You don’t need to enter dfu mode.
If you have used OpenCR, you just update it using board manager.

Please follow below link, it will help you



1 Like

Thanks Darby for the reply,
I updated the Board Manager on Arduino IDE to 1.0.15 (also tried 1.0.16) → the tried updating the Bootloader using Arduino IDE (but failed) with the following error message:

Arduino: 1.8.5 (Linux), Board: "OpenCR Board, OpenCR Bootloader"

    at cc.arduino.packages.uploaders.SerialUploader.burnBootloader(SerialUploader.java:362)
    at processing.app.Editor.lambda$handleBurnBootloader$14(Editor.java:2519)
    at java.lang.Thread.run(Thread.java:748)
Error while burning bootloader.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I made sure the


is showing the STMicroelectronics (NOTE: There is no DFU mode written as you mention in the emanual - but this entry in lsusb starts showing up only after DFU mode triggered on using Boot + Reset button)

Bus 002 Device 002: ID 8087:8000 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 138a:0017 Validity Sensors, Inc. Fingerprint Reader
Bus 003 Device 006: ID 0483:5740 STMicroelectronics STM32F407
Bus 003 Device 004: ID 0765:5010 X-Rite, Inc. 
Bus 003 Device 003: ID 8087:07dc Intel Corp. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Can you let me know some tips to go ahead with debugging?


Hi @tosandip,

This is a space for discussion, so the question is not appropriate.
I will continue on the issue page of the link below.


1 Like

Exactly same Checksum error here - before I start digging…was it solved? any ideas? Tnx Michael

BIG SORRY - my fault…didn´t read the error messages after uploading correctly…no issue anymore!

1 Like