Best Practices in ROS. (Making FRC->ROS Tutorial)
Hello!
I am learning ROS and want to teach it to my (and every) FRC team in few months. I plan on doing this make a “ros walkthrough” to demo the “correct” way to use ros.
For the example, we will make an autonomous (click and go) ROS-Powered robot from start to finish using best practices.
I want the finished code to also be a sturdy starting/sanity point for exploring ROS for the 350,000+ FRC students using equipment available to FRC teams.
Example Hardware:
- Drivebase: Old FRC Differential Drive Kit bot
- Motor Controllers: Serial -> Arduino ->“RC-Style” PWM -> “Talon SR Speed Controller”
- Encoders: Serial <- Arduino <- US-Digital Quadrature Encoder E4P
- IMU: Serial to Arduino to 3 axis accel + 3 axis gyro
- Sensor: Kinect
- Brain: A laptop running Ubuntu 14.04 LTS
- Input: another laptop.
Software: How should I do it? I think:
- I should use ros indigo because it is the ‘current’ release.
- I should use navigation instead of nav2d
- navigation_tutorials are for hydro and are mostly hardware dependent.
- I do not want to use obsolete things.
- I want to make reusable code. I do not want to reinvent the wheel.
Config
- sensor transforms: make a node that publishes the transform base_laser → base_link
- sensor source: for kinect use freenect_stack
- I make a node that reads from the encoders and publishes an odometry source or the encoder position. (which?)
- Should I use robot_localization?
- imu: arduino publishes “imu” (sensor_msgs/Imu)
- encoders: arduino publishes “wheel_encoders” or “wheel_odom” (nav_msgs/Odometry)
- base controller: Should use diff_drive_controller? Should the arduino subscribe to a motor_speed, motor_power, or cmd_vel?
Thank you very much for using your expertise to advance the human condition!
prosa
prosa100,
It's been a while since you posted this question but I was just wondering how your project to teach ROS to the FRC community turned out. Did you develop any tutorials or packages? Can you please contact me at altemir .at. verizon dot net and let me know?