pip install protobuf
pip install bitarray
pip install numpy-
地图大小/数据单位
- 原点为(0,0),在地图中心
- 在Athena界面中显示为
1200 x 900,单位为cm - 通过Vision_Detection得到的大小为
12000 x 9000,单位为mm - 通过grSim_Replacement控制的大小为
12 x 9,单位为m
-
控制信号
- 线速度单位不明,小于m/s,即设置速度为1时,实际速度小于1m/s
- 角速度单位约等于 0.5rad/s,即设置角速度为$1$时,转一圈大约需要6.28秒
-
机器人参数
- 读取位置信号时,得到的数据单位是mm,12000*9000
- 读取角度信号时,得到的数据是按照弧度制
- 角度信号0°时向右,随角度增加,顺时针旋转(-180,180)
- 线速度单位不明,小于m/s,即设置速度为1时,实际速度小于1m/s
- 角速度单位约等于 0.5rad/s,即设置角速度为1时,转一圈大约需要6.28秒
- 最大速度 500cm/s
- 最大加速度 500cm/s^2
- 控制机器人
# 1.新建一个机器人,要依次给出颜色、id、半径、地址端口信息 test_robot = Robot("yellow", 1,0.15,control_addr) # 2.设置速度或者瞬移位置,这条命令会自动发出控制命令 test_robot.setSpeed(1, 1, 1) test_robot.setReplacement(1, 1, 2)
- 读取机器人信息
#1.新建一个camera实例,要传入读取地址端口 camera=Camera(read_addr) #2.读取信息,现在Camera类中有 x,y,ori=camera.getRobotPos()#读取全部机器人的位置信息(数组),顺序是蓝0-7,黄0-7 vx,vy,vori=camera.getRobotVel()#读取全部机器人的速度信息(数组),顺序是蓝0-7,黄0-7 blue_robot,yellow_robot=camera.getRobotDict()#读取全部机器人的全部信息(字典),通过id号来索引。 #3.获取想要的信息 xb0=x[0]#蓝色0号机器人的位置 vb2=vx[2]#蓝色2号机器人的x方向速度 oy3=yellow_robot[3].orientation#黄色3号机器人的转向
-
Robot类
- 变量
- color
- id
- radius
- 方法
- setSpeed
- setReplacement
- getSpeedCommand
- 变量
-
Camera类
- 变量
- read_addr
- read_socket
- 方法
- update_state
- getRobotPos
- getRobotVel
- getRobotDict
- 变量
-
utils工具函数库
- cal_angle(start,goal),通过getRobotDict获取的机器人输入函数,获取
start的方向与start到goal的方向之间的夹角,范围[-pi,pi]
- cal_angle(start,goal),通过getRobotDict获取的机器人输入函数,获取
-
路径规划函数D*lite(DStar类中)
pf = DStar(x_start=0, y_start=0, x_goal=5, y_goal=5) #1.初始化 pf.set_obstract(x,y,r,val) #2.设置障碍物位置和大小,默认圆形,val为设定值,val=-1为设置为障碍,val=1为设置为可行域 pf.replan() #3.路径规划 pf.plan 内为当前路径 plan[i].x plan[i].y #4.为第i步位置 pf.update_cell(x,y,r) #5.设置(x,y)点的属性,r<0视为区域不可行 initialize_map(x,y) #6.不加初始化的路径规划函数仅限于数学空间下, 不限制物理空间对应尺寸,初始化函数为 设置地图为x*y的尺寸,并限制地图中心为坐标系原点 pf.shorter_the_path(e) #7.路径优化算法,去掉直线上的多于点,e为参考误差,一般设为2,无返回值,调用此函数后,使用get_path或pf.path读取路径