sudo service network-manager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start
rospack plugins --attrib=plugin nav_core
c++filt
rosrun rqt_reconfigure rqt_reconfigure
rosrun map_server map_saver -f 地图名
sudo rm /var/lib/apt/lists/lock
ll /dev/ttyUSB*
rosmsg show
激活环境
source activate tensorflow
推出环境
source deactivate
tensorboard查看
tensorboard --logdir=
1、关于Robot Footprint Model
机器人模型设置的不好,会使得机器人在避障时表现的非常糟糕,具体参数设置在ros wiki上有详细的解释和办法。
2、关于碰撞、障碍参数:
min_obstacle_dist :与障碍物期望的最小距离,这个和Robot Footprint Model联系使用,具体模型对于的min_obstacle_dist 不同,大概意思就是加入一个膨胀将小车包裹起来。
inflation_dist :这个是障碍物周围的缓冲区,进缓冲区会导致规划器减速,不过这个值得比min_obstacle_dist大才有效。可以设置相对小一些,牺牲安全提高速度。
include_costmap_obstacles:这个必须设置成true才能规避实时探测到的,建图时不存在的障碍物。
costmap_obstacles_behind_robot_dist:是考虑后方n米范围内的障碍物,设置的越大,考虑范围越广,不过相对而言计算量就越大。
3、优化器的参数:
penalty_epsilon:这个参数会为速度的约束提供一个缓冲的效果,就是在到达速度限制前会产生一定的惩罚让其提前减速达到缓冲的效果。
weight_kinematics_forward_drive:这个参数就是倒车,不过这个参数的意思是迫使机器人只选择前进的方向,也就是权重越大,倒车惩罚越大。但是teb不会完全禁止倒车。
weight_kinematics_turning_radius是机器人最小转向半径的权重,越大则越容易达到最小转向半径的情况。其实我们是不希望到达最小转弯半径的,会使得车辆行驶有很大的顿挫感觉。
weight_optimaltime:这个参数是最优时间权重,如果大了,那么车会在直道上快速加速。
配置错误可能会出现没有本地代价地图
commen:
footprint: [[-0.05, -0.19], [-0.05, 0.19], [0.45, 0.19], [0.45,-0.19]]
#robot_radius: 0.105
transform_tolerance: 0.2
map_type: costmap
obstacle_layer:
enabled: true
obstacle_range: 5.0
raytrace_range: 5.5
inflation_radius: 0.2
track_unknown_space: false
combination_method: 1
observation_sources: laser_scan_sensor
laser_scan_sensor: {data_type: LaserScan, topic: scan, marking: true, clearing: true}
inflation_layer:
enabled: true
cost_scaling_factor: 10.0 # exponential rate at which the obstacle cost drops off (default: 10)
inflation_radius: 2.5 # max. distance from an obstacle at which costs are incurred for planning paths.
static_layer:
enabled: true
map_topic: "/map"
global
global_costmap:
global_frame: map
robot_base_frame: base_link
update_frequency: 10.0
publish_frequency: 10.0
transform_tolerance: 0.5
static_map: true
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
local:
local_costmap:
global_frame: odom
robot_base_frame: base_link
update_frequency: 10.0
publish_frequency: 10.0
transform_tolerance: 0.5
static_map: false
rolling_window: true
width: 3
height: 3
resolution: 0.05
map_type: costmap
observation_sources: scan
scan: {sensor_frame: base_scan, data_type: LaserScan, topic: scan, marking: true, clearing: true}
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::ObstacleLayer"}
1、将turtlebot3_world.launch 中的
修改为你想要扫的world。并 roslaunch
2、启动slam
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
3、启动键盘控制
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
4、代码保存
rosrun map_server map_saver -f ~/racemap
1、打开摄像头
import cv2
cap = cv2.VideoCapture(0)
while True:
ret_,fram = cap.read()
cv2.imshow('fram',fram)
if cv2.waitKey(1)& 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
2、opencv默认的颜色排列为BGR对图片显示之前的图片颜色处理
#灰度
gray = cv2.cvtColor(fram,cv2.COLOR_BGR2GRAY)
#hsv
hsv = cv2.cvtColor(fram,cv2.COLOR_BGR2HSV)
#rgb
rgb = cv2.cvtColor(fram,cv2.COLOR_BGR2RGB)
3、cv画图、添加字
# 矩形
cv2.rectangle(fram, (350, 0), (500, 250), (0, 255, 0), 1)
# 圆形
cv2.circle(fram, (255, 255), 100, (255, 0, 0), 1)
# 加字体
cv2.putText(fram, 'python', (100, 100),cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,4,(255,255,255),2,cv2.LINE_AA)