# ucar_controller
[TOC]
## 简介
`ucar_controller`作为与下位机mcu通讯的ROS包实现了电机控制、灯光控制、mcu板载imu数据读取等功能。我们可以通过发布`/cmd_vel(geometry_msgs/Twist)`速度控制话题,指定xy方向的平移速度以及yaw角的旋转速度来控制小车运动。同时发布里程计话题`/odom(nav_msgs/Odometry)`实时发布小车里程计记录的速度、位置。如果是晓mini版本的智能驾驶小车,本包还会发布`/imu(sensor_msgs/Imu)`。
## 安装所需依赖
```bash
sudo apt update
sudo apt install ros-melodic-serial libeigen3-dev
sudo pip3 uninstall em # 卸载em,em可能未安装。忽视未安装无法卸载的报错即可
sudo pip3 install empy -i https://pypi.tuna.tsinghua.edu.cn/simple
```
编译:
```bash
cp -r ucar_controller ~/ucar_ws/src/
cd ~/ucar_ws
catkin_make
```
## 简单验证
1、启动节点:
注:晓版本的小车需要把`base_driver.launch`中导入的`driver_params_mini.yaml`注释,并换为:`driver_params_xiao.yaml`
即已经注释的那行。
```bash
roslaunch ucar_controller base_driver.launch
```
2、发布话题控制:
base_driver节点订阅/cmd_vel话题,msg类型为geometry_msgs/Twist。
我们可以通过发布/cmd_vel话题来控制小车移动,比如:
Ctrl + Alt + T重新开启一个终端。
用rostopic工具发布话题。(注意用Tab键自动补全来填写geometry_msgs/Twist数据,不然手动输入格式容易出错)
```bash
rostopic pub -r 20 /cmd_vel geometry_msgs/Twist "linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"
```
输入指令后小车会持续逆时针自转。
## 全部功能介绍
### 1. 实时控制
方式:发布话题。
话题名:`/cmd_vel`
msg类型:geometry_msgs/Twist
```
geometry_msgs/Vector3 linear
float64 x # x方向线速度
float64 y # y方向线速度
float64 z # 无效
geometry_msgs/Vector3 angular
float64 x # 无效
float64 y # 无效
float64 z # z轴角速度
```
### 2. 获取里程计数据
方式:订阅话题。
话题名:`/odom`
msg类型:nav_msgs/Odometry
```cpp
std_msgs/Header header
uint32 seq
time stamp
string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/Pose pose
geometry_msgs/Point position # 里程计坐标下的位置,z值无效
float64 x
float64 y
float64 z
geometry_msgs/Quaternion orientation # 里程计坐标下的朝向
float64 x
float64 y
float64 z
float64 w
float64[36] covariance
geometry_msgs/TwistWithCovariance twist
geometry_msgs/Twist twist
geometry_msgs/Vector3 linear # 小车实时线速度,z值无效
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular # 小车实时角速度,x,y值无效
float64 x
float64 y
float64 z
float64[36] covariance
```
可以通过执行`rostopic echo /odom `指令,在终端实时打印小车里程计数据。
### 3. 获取imu数据
>晓版本小车没用该功能,晓版本小车需要使用fdilink_ahrs包来获取imu数据
1. imu数据
方式:订阅话题。
话题名:`/imu`
msg类型:sensor_msgs/Imu
```cpp
std_msgs/Header header
uint32 seq
time stamp
string frame_id
geometry_msgs/Quaternion orientation # 小车姿态
float64 x
float64 y
float64 z
float64 w
float64[9] orientation_covariance
geometry_msgs/Vector3 angular_velocity # 小车实时角速度
float64 x
float64 y
float64 z
float64[9] angular_velocity_covariance
geometry_msgs/Vector3 linear_acceleration # 小车实时加速度
float64 x
float64 y
float64 z
float64[9] linear_acceleration_covariance
```
可以通过执行`rostopic echo /imu `指令,在终端实时打印小车imu数据。
2. 地磁指北数据
方式:订阅话题。
话题名:`/mag_pose_2d`
msg类型:geometry_msgs/Pose2D
```cpp
float64 x # 无效
float64 y # 无效
float64 theta # 指北的yaw角值(单位:rad)
```
可以通过执行`rostopic echo /mag_pose_2d `指令,在终端实时打印。
### 4. 设置灯光效果
服务名:`get_battery_state`
服务数据类型:aicar_controller/GetBatteryInfo.srv
```
uint8 MODE_NORMAL = 0 # 常亮
uint8 MODE_BLINK = 1 # 闪烁
uint8 MODE_BREATH = 2 # 呼吸
uint8 mode_type # 灯光模式
float64 frequency # 模式频率(常亮模式自动忽略)
uint8 red_value # 红色光亮度范围(0-255)
uint8 green_value # 绿色光亮度范围(0-255)
uint8 blue_value # 蓝色光亮度范围(0-255)
---
bool success # 设置是否成功
string message # 异常log信息
```
response枚举:
1、设置失败(可能与MUC通信异常)
res.success = false;
res.message = "Can't connect base's MCU.";
2、设置成功
res.success = true;
res.message = "Set LED success.";
### 5. 小车电池信息发布(仅电池剩余电量百分比有效,即:percentage)
话题名:`battery_state`
`sensor_msgs/BatteryState.msg`
```
POWER_SUPPLY_STATUS_UNKNOWN = 0 # 未知
POWER_SUPPLY_STATUS_CHARGING = 1 # 充电
POWER_SUPPLY_STATUS_DISCHARGING = 2 # 放电中
POWER_SUPPLY_STATUS_NOT_CHARGING = 3 # 未充电
POWER_SUPPLY_STATUS_FULL = 4 # 满电
POWER_SUPPLY_HEALTH_UNKNOWN = 0 # 未知
POWER_SUPPLY_HEALTH_GOOD = 1 # 良好
POWER_SUPPLY_HEALTH_OVERHEAT = 2 # 过热
POWER_SUPPLY_HEALTH_DEAD = 3 # 没电
POWER_SUPPLY_HEALTH_OVERVOLTAGE = 4 # 过电压
POWER_SUPPLY_HEALTH_UNSPEC_FAILURE = 5 # 未知错误
POWER_SUPPLY_HEALTH_COLD = 6 # 过冷
POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE = 7 #
POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE = 8 #
POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0 # 未知
POWER_SUPPLY_TECHNOLOGY_NIMH = 1 # Ni-MH battery 镍氢电池
POWER_SUPPLY_TECHNOLOGY_LION = 2 # Li-ion battery 锂离子电池
POWER_SUPPLY_TECHNOLOGY_LIPO = 3 # Li-Po battery 锂聚合物电池
POWER_SUPPLY_TECHNOLOGY_LIFE = 4 # li-Fe battery 锂铁电池
POWER_SUPPLY_TECHNOLOGY_NICD = 5 # NiCd battery 镍镉电池
POWER_SUPPLY_TECHNOLOGY_LIMN = 6 # LiMn battery 锂锰电池
std_msgs/Header header
uint32 seq
time stamp
string frame_id
float32 voltage # Voltage in Volts (Mandatory)
float32 current # Negative when discharging (A) (If unmeasured NaN)
float32 charge # Current charge in Ah (If unmeasured NaN)
float32 capacity # Capacity in Ah (last full capacity) (If unmeasured NaN)
float32 design_capacity # Capacity in Ah (design capacity) (If unmeasured NaN)
float32 percentage # Charge percentage on 0 to 1 range (If unmeasured NaN)
uint8 power_supply_status # The charging status as reported. Values defined above
uint8 power_supply_health # The battery health metric. Values defined above
uint8 power_supply_technology # The battery chemistry. Values defined above
bool present # True if the battery is present
float32[] cell_voltage # An array of individual cell voltages for each cell in the pack
# If individual voltages unknown but number of cells known set each to NaN
string location # The location into which the battery is inserted. (slot number or plug)
string serial_number # The best approximation of the battery serial number
```
当前版本实际使用到的status数据:
```cpp
battery_msg.power_supply_status = 2; // 放电中 即正在运行
battery_msg.power_supply_health = 1; // 良好
battery_msg.power_supply_technology = 0; // UNKNOWN
battery_msg.present = true; // 存在电池
battery_msg.percentage = curr
没有合适的资源?快使用搜索试试~ 我知道了~
ucar_ws.tar.gz
需积分: 5 0 下载量 153 浏览量
2022-11-30
15:59:05
上传
评论
收藏 619.37MB GZ 举报
温馨提示
共4507个文件
cmake:1203个
make:1039个
py:244个
ucar_ws.tar.gz
资源推荐
资源详情
资源评论
收起资源包目录
ucar_ws.tar.gz (4507个子文件)
map_04.pgm.0 3.75MB
libusb-1.0.so.0 87KB
control_test.cpp.0 16KB
detect7.py.0 9KB
063be67fb38929d39433ad9581f19ac3a61f3c 98B
0ab8d39cbc8e841301866c146b36b85a3b5cca 532B
0b90aee922132c2ada9cc250408d4c7aa9a35b 2KB
114080494f7503cbdaab436cd690095cca712e 2KB
11aae2ecbcfaeb3f27f6e901eab6cdb979fb66 193B
1215cc8f3a23c6de6213e5097b7a86d140bc27 93B
1538eb0b00f4eddffa17929796de55b838f34b 18B
1b3a10d310516503eaf541e9e55b4a615c0631 57B
1f5e6ab37eea471017084fe30141e5750a2f0b 9KB
23783efc62af1c87a915dcdd7d195f73aaf48b 156B
27d7805e169cc10cc13f93ec1a2b32a5325c66 4KB
362a88b9fb86b88fa86037959c23644a350c17 56B
3b2bde22cef3c26710c2c0b78ea02bd5e9661e 51B
65f8bfbd19b3d70d795a6413292e8a5a9723e8 1KB
7019fc74a360c4dcc02fefa68f4fc355d9cac0 719B
opencv_test.launch.8 1KB
875ba8cbfb9bdf18537cb965a2a9f21da4e91b 134B
91dd981e66c1152a71f3413298f42c4b3f4681 1KB
97463b621464f65b72bdfdb8c30cbf669fa891 73B
9805deccf16cf41a2b6f39fada6b79d9766751 369B
9ebcebe5afa664b26c50111f6183cc3f0caf3f 809B
:wq 3KB
libydlidar_sdk.a 1.07MB
a5b76c92bad1ef16d617876a232906dbb9f398 81B
LookupTransform.action 266B
ahrs_driver 148KB
tf2_msgs-msg.asd 2KB
xf_mic_asr_offline-srv.asd 1KB
ucar_controller-srv.asd 652B
xf_mic_tts_offline-srv.asd 278B
tf-msg.asd 272B
yolo-srv.asd 264B
xf_mic_asr_offline-msg.asd 263B
tf2_msgs-srv.asd 262B
tf-srv.asd 256B
serial_port-msg.asd 250B
b084576a5fd9ea6bd8d83689e0c7105e8bce79 90B
b44aa643b0485812d60cd75852dfcd58bf0a56 63B
b6540399d4c587460a31b3826032243df168af 5KB
b77ad1df812f67c4a60cf797074d911dcf92e3 1KB
b7cbf445f5ecc31c28d0330810a046f8b093f2 1KB
base_driver.cpp.bak 39KB
opencv_test.cpp.bak 16KB
control_test.cpp.bz.bak 16KB
control_test.cpp.bak 16KB
yolo.py.bak 10KB
opencv_test.cpp.bz.bak 10KB
common.py.bak 3KB
control_test.launch.bak 2KB
control_test.launch.bak 2KB
opencv_test.launch.bak 1KB
ydlidar.launch.bak 1KB
opencv_test.cpp.bak1 7KB
control_test.launch.bak1 2KB
driver_params_mini.yaml.bak1 385B
control_test.cpp.bak2 17KB
opencv_test.cpp.bak2 7KB
control_test.cpp.bak3 17KB
opencv_test.cpp.bak3 7KB
control_test.cpp.bak4 16KB
opencv_test.cpp.bak4 8KB
control_test.cpp.bak5 17KB
opencv_test.cpp.bak5 8KB
control_test.cpp.bak6 16KB
opencv_test.cpp.bak6 10KB
control_test.cpp.bak7 16KB
control_test.cpp.bak8 16KB
control_test.launch.bakee 2KB
opencv_test.launch.bal 3KB
base_driver 489KB
local_setup.bash 283B
local_setup.bash 283B
local_setup.bash 283B
setup.bash 260B
setup.bash 260B
setup.bash 260B
yolo.py.bat 10KB
ydlidar.launch.bat2 1KB
bf82db71fca11975ecd07739c39e7eb1822989 143B
feature_tests.bin 13KB
feature_tests.bin 13KB
CMakeDetermineCompilerABI_CXX.bin 9KB
CMakeDetermineCompilerABI_CXX.bin 9KB
CMakeDetermineCompilerABI_C.bin 9KB
CMakeDetermineCompilerABI_C.bin 9KB
call.bnf 246B
car_Mileage_info.txt.bp 13B
buffer_server 338KB
.built_by 11B
.built_by 11B
lock.c 21KB
CMakeCCompilerId.c 18KB
CMakeCCompilerId.c 18KB
lidar_c_api_test.c 4KB
feature_tests.c 688B
feature_tests.c 688B
共 4507 条
- 1
- 2
- 3
- 4
- 5
- 6
- 46
资源评论
hHhH呢
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功