有谁有turtlebot的C++避障程序或者类似的导航程序的实例吗

 我来答
匿名用户
2017-08-10
展开全部
inline void rob_control(std::vector<cv::Point> &_contour){
ros::Rate loopRate(10);
int rcount=0;
int lcount=0;
int r_state = 0;
int l_state = 0;
int in_cl = 8;//运动状态改变的阈值
for(unsigned i=0;i<_contour.size();i++)
{
cv::Point p=_contour[i];

PointT pointx=down_cloud->at(p.x*downScale,p.y*downScale);

//todo 安全距离和宽度设定
if(pointx.x<0.3&&pointx.x>-0.25&&pointx.z<1.2)
{
if(pointx.x>0)
{
rcount++;
}
else if(pointx.x<0)
{
lcount++;
}
pre_imageViewer->addCircle( p.x*downScale,p.y*downScale, 3, 1, 0.2,0.1, "contour", 1);
continue;
}
pre_imageViewer->addCircle( p.x*downScale,p.y*downScale, 1, 0, 1,1, "contour", 1);
}
while (ros::ok()){
if(lcount>in_cl&&rcount==0)
{
//turn right
if(l_state == 0)
{

tr();
r_state = 1;
l_state = 0;
std::cout<<"当前路面进行右转。"<<endl;
}

else
{
tl();
l_state = 1;
r_state = 0;
std::cout<<"当前路面进行左转。"<<endl;

}
}
else if(lcount==0&&rcount>in_cl)
{
//turn left
if(r_state == 0)
{
tl();
r_state = 0;
l_state = 1;
}
else
{
tr();
r_state = 1;
l_state = 0;
}
}
else if(lcount>in_cl&&rcount>in_cl)
{
//stop
std::cout<<"复杂情况 : 多个障碍物"<<endl;
st();
tr();
r_state = 1;
l_state = 0;
}
else
{
gs();
l_state= 0;
r_state = 0;
}

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微测检测
2023-10-18 广告
深圳市微测检测有限公司始创于2005年,是一家综合性、全方位、一站式的权威第三方检测认证公司。自成立以来,Microtest微测检测已成功为上万家企业完成数十万计的产品测试和认证,协助企业的产品畅销全球。Microtest微测检测已建立二十... 点击进入详情页
本回答由微测检测提供
百度网友761cd15c
2017-08-10 · 超过17用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:14.3万
展开全部
避障的话,最好能用两个以上超声波模块,这样做就可以不用步进电机了。

你可以把两到三个超声波模块按一定角度装到车的前部,这样就可以根据三个超声波模块回收的距离信息来判断哪个方向有障碍物,从而选择正确的方向前行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式