ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

The open source project I am working on is quite similar to yours and might be helpful: https://ros-mobile-robots.com/. The current robot model is based on Nvidia Jetbot including a 3D printable platform for RPLidar A2. I am using the DG01D-E motors (sparkfun) which include quadrature wheel encoders (542 ticks).

You can find the ROS Control hardware interface here. The low level code, running on the microcontroller and implementing two PID controllers (one for each wheel), is in the diffbot_base/scripts/base_controller package.

The open source project I am working on is quite similar to yours and might be helpful: https://ros-mobile-robots.com/. The current robot model is based on Nvidia Jetbot including a 3D printable platform for RPLidar A2. I am using the DG01D-E motors (sparkfun) which include quadrature wheel encoders (542 ticks).

You can find the ROS Control hardware interface here. The low level code, running on the microcontroller and implementing two PID controllers (one for each wheel), is in the diffbot_base/scripts/base_controller package.

Regarding your questions.

1.) You can either switch to quadrature encoders or you can try to incorporate the knowledge of your command that you send to the robot from the diff drive controller. If it is positive cmd_vel (moving forward) you can count up otherwise (negative velocity) count the ticks down. However, I never tried this and switch to the cheap DG01D-E motor/quatrature encoder.

2.) Odom will be calculated by ROS control: http://wiki.ros.org/diff_drive_controller#Published_Topics

3.) As mentioned, I have never tried it with your motors but you could go with 1.) or switch to REMO robot platform and the DG01D-E motors.

The open source project I am working on is quite similar to yours and might be helpful: https://ros-mobile-robots.com/. The current robot model is based on Nvidia Jetbot including a 3D printable platform for RPLidar A2. I am using the DG01D-E motors (sparkfun) which include quadrature wheel encoders (542 ticks).

You can find the ROS Control hardware interface here. The "high level hardware interface" from ROS Control is communicating with the "low level base_controller" via custom messages, see also the related msgs package. The low level code, running on the microcontroller and implementing two PID controllers (one for each wheel), is in the diffbot_base/scripts/base_controller package.

Regarding your questions.

1.) You can either switch to quadrature encoders or you can try to incorporate the knowledge of your command that you send to the robot from the diff drive controller. If it is positive cmd_vel (moving forward) you can count up otherwise (negative velocity) count the ticks down. However, I never tried this and switch to the cheap DG01D-E motor/quatrature encoder.

2.) Odom will be calculated by ROS control: http://wiki.ros.org/diff_drive_controller#Published_Topics

3.) As mentioned, I have never tried it with your motors but you could go with 1.) or switch to REMO robot platform and the DG01D-E motors.