vrep小车模型搭建

一、任务:智能小车平台建模
(1)参考⽂档中Tutorial - BubbleRob tutorial 部分,学习:
        a、⻋⾝与轮⼦物理模型的设计
       b、 动⼒学模型等参数的设置
        c、传感器的添加与使⽤
        d、驱动关节的设计与控制
       e 、控制脚本的编写
     
(2)实现要求:
       a、 搭建⼀个四轮⼩⻋,⼩⻋搭载⼀个单⽬彩⾊摄像头
        b、尺⼨(如⻓宽⾼)及底盘参数(如速度限制)可参考DJI RoboMaster S1进⾏设计
        https://www.dji.com/cn/robomaster-s1/specs
        c、不采⽤⻨克纳姆轮
        d、编写简单脚本使得⼩⻋能呈S型路线⾏⾛,当碰到障碍物后能够绕⾏

二、设计内容

1. 总体设计

        机器人由长方体车身和四个轮子、 传感器、 彩色摄像头组成, 两个前轮主要负责转向和
动力输出,两个后轮作为从动轮, 传感器负责检测前方障碍物并绕行。
        以下是 MyBot 机器人的总体设计层次图。 其中 FLwheel_Steering 和 FRwheel_Steering 为
前轮; RLwheel_Motor 和 RRwheel_Motor 为后轮; Nose_Sensor 为传感器,搭载单目彩色摄
像头; AutoFittingCamera 为自适应摄像头,用于拍摄机器人运动时的姿态。

1 机器人总体设计

2. 车身构建

        我们使用 Cuboid 作为车身主体, 为避免主体与其他部件冲突, 我们需要设置其 Object
属性,关闭 Collidable 等属性。

2 车身 Object 属性

同时,我们需要关闭 Local Respondable Mask 属性。

3 车身 Object 属性

3. 车轮构建

         我们将机器人的车轮划分为两组:前轮组(Front)和后轮组(Rear) 。 前轮组负责转向
和动力,后轮组则为从动轮。
        由于我们希望前轮组既负责转向功能,又负责动力输出。为实现这两个功能,我们需要
两个转动关节,其中一转动关节竖向放置,用于控制转向角度,另一转动关节横向放置,用
于输出动力。

### V-REP 中的小车路径规划实现方法 在V-REP环境中,小车的路径规划可以通过多种方式实现。一种常见的方式是通过使用`Dummy`对象和`Path`对象来定义期望的行驶路线[^1]。 #### 使用 Dummy 和 Path 对象进行路径规划 当创建一条新的路径时,在场景中放置多个`Dummy`作为路标点,之后将这些点连接起来形成完整的路径。具体操作如下: - **创建虚拟目标(Dummy)**:右键点击模拟环境空白处 -> 插入-> 坐标系/虚拟物体 (Dummy),然后将其移动到所需位置。 - **构建路径(Path)**:选中所有充当节点的Dummies, 右键菜单选择 “Create path”,这样就可以自动生成一段平滑过渡的道路供车辆跟随。 一旦建立了路径,便可以编写脚本让小车沿此路径前进。通常会涉及到读取当前姿态、计算转向角以及调整轮速等逻辑处理过程[^2]。 #### 利用Python远程API接口控制小车动作 除了图形界面下的手动设置外,还可以借助于V-REP提供的Remote API接口配合编程语言如Python来进行更加灵活多变的操作。例如获取传感器数据反馈给控制器做决策依据;发送指令改变驱动电机的速度方向等等。 ```python import vrep import time def setJointTargetVelocity(clientID,jointHandle,targetVel): err_code=vrep.simxSetJointTargetVelocity( clientID, jointHandle, targetVel, vrep.simx_opmode_oneshot) # 连接到服务器端口9090上的仿真程序实例 client_id = vrep.simxStart('127.0.0.1', 19997, True, True, 5000, 5) if client_id != -1: print ('Connected to remote API server') res,left_motor_handle=vrep.simxGetObjectHandle(client_id,'LeftMotor',vrep.simx_opmode_blocking) res,right_motor_handle=vrep.simxGetObjectHandle(client_id,'RightMotor',vrep.simx_opmode_blocking) try: while True: # 设置左右马达的目标速度 setJointTargetVelocity(client_id,left_motor_handle,-0.5) setJointTargetVelocity(client_id,right_motor_handle,0.5) time.sleep(0.1) except KeyboardInterrupt: pass # 断开连接前停止所有的关节活动 setJointTargetVelocity(client_id,left_motor_handle,0) setJointTargetVelocity(client_id,right_motor_handle,0) else: print ('Failed connecting to remote API server') vrep.simxFinish(-1) # 关闭所有打开的连接 ``` 上述代码展示了如何建立与V-REP之间的通信链接,并且操控两个名为'LeftMotor'和'RightMotor'的对象代表差分驱动机器人的左轮和右轮。通过调节两者的旋转速率差异从而达到转弯的目的。 #### 应对不确定性的策略——基于采样的规划算法 考虑到实际应用中存在的不确定性因素,比如障碍物检测误差或是地形变化带来的影响,采用诸如快速探索随机树(RRT)或概率 roadmap(PRM)这样的基于样本采集的方法可能是更好的解决方案之一。尽管这类技术存在一定的不可预见性和不稳定性,但在复杂环境下却有着无可比拟的优势[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小蜗牛,大大梦想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值