基于ros_arduino_bridge的智能⼩车----上位机篇基于ros_arduino_bridge的智能⼩车----上位机篇
ros_arduino_bridge⽂件系统
├── README.md
├── ros_arduino_bridge                      # metapackage (元包)
│├──
│└── l
├── ros_arduino_firmware                    #固件包,更新到Arduino
│├──
│├── l
│└── src
│└── libraries                      #库⽬录
│├── MegaRobogaiaPololu          #针对Pololu电机控制器,MegaRobogaia编码器的头⽂件定义
││├── commands.h              #定义命令头⽂件
││├── diff_controller.h      #差分轮PID控制头⽂件
││├── MegaRobogaiaPololu.ino  #PID实现⽂件
││├── sensors.h              #传感器相关实现,超声波测距,Ping函数
││└── servos.h                #伺服器头⽂件
│└── ROSArduinoBridge            #Arduino下位机部分,可以根据⾃⼰搭建的下位机进⾏修改
│├── commands.h              #定义命令
│├── diff_controller.h      #差分轮PID控制头⽂件
│├── encoder_driver.h        #编码器驱动头⽂件,定义插脚(pins)
│├── encoder_driver.ino      #编码器驱动实现, 读取编码器数据,重置编码器等
│├── motor_driver.h          #电机驱动头⽂件
│├── motor_driver.ino        #电机驱动实现,初始化控制器,设置速度
│├── ROSArduinoBridge.ino    #核⼼功能实现,
│├── sensors.h              #传感器头⽂件及实现
│├── servos.h                #伺服器头⽂件,定义插脚,类
│└── servos.ino              #伺服器实现
├── ros_arduino_msgs                        #消息定义包
│├──
│├── msg                                #定义消息
││├── AnalogFloat.msg                #定义模拟IO浮点消息
││├── Analog.msg                      #定义模拟IO数字消息
││├── ArduinoConstants.msg            #定义常量消息
││├── Digital.msg                    #定义数字IO消息
││└── SensorState.msg                #定义传感器状态消息
│├── l
│└── srv                                #定义服务
│├── AnalogRead.srv                  #模拟IO输⼊
│├── AnalogWrite.srv                #模拟IO输出
│├── DigitalRead.srv                #数字IO输⼊
│├── DigitalSetDirection.srv      #数字IO设置⽅向
│├── DigitalWrite.srv                #数字IO输⼊
│├── ServoRead.srv                  #伺服电机输⼊
│└── ServoWrite.srv                  #伺服电机输出
└── ros_arduino_python                      #ROS相关的Python包,⽤于上位机,树莓派等开发板或电脑等。
├──
├── config                              #配置⽬录
│└── arduino_params.yaml            #定义相关参数,我们需要对此修改才能使⽤。由arduino.launch调⽤├── launch
│└── arduino.launch                  #启动⽂件
├── nodes
│└── arduino_node.py                #python⽂件,实际处理节点,由arduino.launch调⽤,即可单独调⽤。├── l
├── setup.py
└── src                                #Python类包⽬录
└── ros_arduino_python
├── arduino_driver.py          #Arduino驱动类
├── arduino_sensors.py          #Arduino传感器类
├── base_controller.py          #基本控制类,订阅cmd_vel话题,发布odom话题
└── __init__.py                #类包默认空⽂件
1.下载ros_arduino_bridge
进⼊你的workspace⽬录下的src⽬录
cd ~/catkin_ws/src
git clone github/hbrobotics/ros_arduino_bridge.git
2.编译
cd ..
catkin_make
实际上,编译完成后并不能直接控制⼩车,还需要匹配串⼝,修改设置⽂件
在ubuntu终端输⼊
ls /dev/tty*
可以看到你的串⼝情况,⽐如我的上位机和下位机就是通过 /dev/ttyUSB0 连接的。
接下来修改配置⽂件arduino_params.yaml,⽐如说我的就位于~/catkin_ws3/src/ros_arduino_bridge/ros_arduino_python/config,打开:
# For a direct USB cable connection, the port name is typically
# /dev/ttyACM# where is # is a number such as0,1,2, etc
# For a wireless connection like XBee, the port is typically
# /dev/ttyUSB# where # is a number such as0,1,2, etc.
port:/dev/ttyUSB0            #你要修改的部分,改为arduino板和上位机连接的串⼝号
baud:57600
timeout:0.1
rate:50
sensorstate_rate:10
use_base_controller: True    #你要修改的部分改为True
base_controller_rate:10
# For a robot that uses base_footprint, change base_frame to base_footprint
base_frame: base_link
# ===这部分是车⼦的参数,⽐如轮⼦直径,减速⽐,编码器信息等,根据你⾃⼰的车⼦来修改
wheel_diameter:0.146        #你要修改的部分
wheel_track:0.2969          #你要修改的部分
encoder_resolution:8384    #你要修改的部分
gear_reduction:1.0          #你要修改的部分
motors_reversed: True        #你要修改的部分
# ===PID部分,控制轮速,修改到车⼦能够根据命令⾛直线且速度稳定
Kp:10                      #你要修改的部分
Kd:12                      #你要修改的部分
Ki:0                        #你要修改的部分
Ko:50                      #你要修改的部分
accel_limit:1.0            #你要修改的部分
# === Sensor definitions.  Examples only - edit for your robot.
#    Sensor type can be one of the follow(case sensitive!):
#  * Ping
#  *GP2D12
#  * Analog
#  * Digital
#  * PololuMotorCurrent
#  * PhidgetsVoltage
#  *PhidgetsCurrent(20 Amp,DC)
sensors:{
#motor_current_left:{pin:0, type: PololuMotorCurrent, rate:5},
#motor_current_right:{pin:1, type: PololuMotorCurrent, rate:5},
#ir_front_center:{pin:2, type:GP2D12, rate:10},
#sonar_front_center:{pin:5, type: Ping, rate:10},
arduino_led:{pin:13, type: Digital, rate:5, direction: output}
}
给配置⽂件改个名,改成my_arduino_params.yaml
3.下位机
从github下载的代码中包含对应的arduino mega2560下位机程序,严格按照原作者推荐安装下位机的话就可以直接使⽤,否则就要做对应修改。如何安装修改另开⼀篇博客(基于ros_arduino_bridge的智能⼩车----下位机篇)
4.测试
新终端,启动roscore
新终端,增加路径到bash
source ~/catkin_ws/devel/setup.bash
python处理xml文件新终端,启动节点
roslaunch ros_arduino_python arduino.launch
新终端,发布Twist消息来控制机器⼈的运⾏,如:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。