#include <iostream>
#include <libplayerc++/playerc++.h>
using namespace std;
int main(int argc, char *argv[])
{
using namespace PlayerCc;
PlayerClient robot("localhost");
BumperProxy bp(&robot,0);
Position2dProxy pp(&robot,0);
pp.SetMotorEnable(true);
for(;;)
double turnrate, speed;
double error;
bool wall;
motor_a_speed(0);
motor_c_speed(0);
while(1) {
front_bumper = SENSOR_2;
left_bumper = SENSOR_3;
if (front_bumper > 2) {
if (left_bumper < 3) {
motor_a_speed(5);
motor_c_speed(drive_speed);
motor_a_dir(fwd);
motor_c_dir(fwd);
}
else {
motor_a_speed(drive_speed);
motor_c_speed(5);
motor_a_dir(rev);
motor_c_dir(rev);
}
}
else {
motor_a_speed(drive_speed);
motor_c_speed(drive_speed);
motor_a_dir(brake);
motor_c_dir(brake);
mrest(100);
cputs("bump");
motor_a_dir(fwd);
motor_c_dir(rev);
msleep(450);
cputs("right");
motor_a_speed(10);
motor_a_dir(fwd);
motor_c_dir(fwd);
mrest(1300); …Run Code Online (Sandbox Code Playgroud) 我正在研究一个2D空间,我的机器人需要遵循轨迹,同时避开一些障碍物.
我最近读到了关于路径规划的方法,如"矢量场直方图"和"动态窗口方法".
是否值得在2D空间中使用这些算法,还是应该将其作为潜在场或快速探索随机树?
我正在为我的机器人实施蒙特卡洛定位,给出了环境地图及其起始位置和方向.我的方法如下:
现在,我为机器人的环境编写了一个模拟器,以下是本地化的行为:http://www.youtube.com/watch?v = q7q3cqktwZI
我非常害怕机器人可能会在较长一段时间内迷路.如果将粒子添加到更广泛的区域,机器人会更容易丢失.
我期待更好的表现.有什么建议?
我正在尝试用python中的GUI来控制我的机器人汽车.我的问题是我如何做一个确定按下按钮的功能.我想在按下按钮时移动汽车,并在释放按钮时停止汽车.
from Tkinter import *
hold_down = False
root = Tk()
def button_hold(event):
hold_down=true
while hold_down== True:
print('test statement')
hold_down = root.bind('<ButtonRelease-1>',stop_motor)
def stop_motor(event):
hold_down= False
print('button released')
button = Button(root, text ="forward")
button.pack(side=LEFT)
root.bind('<Button-1>',button_forward)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我试图模拟我在这个答案中找到的东西
我尝试在while一个布尔循环中做到这一点.当用户按下按钮时,布尔值变为True,代码进入while循环.当用户释放按钮时,布尔值会更改为,False并且代码将从循环中退出,但在此代码中,无论是否释放按钮,布尔值始终为true.
编辑:我希望在条件发生之前调用函数.要调用的函数是hold_down(),要检查的条件是按钮被释放.
更新:我找到了一种方法让它工作.
我已经在Python和JavaScript中编程了一段时间.我还编写了arduino语言,它是C和C++的混合.我刚刚被介绍给RobotC.RobotC使用的语法与我学过的任何语言都不一样.有人可以帮助解释这些语法差异,以便我能更好地理解它吗?
问题1:
制作电机时,可以使用以下语法:
motor[motorA] = 50
Run Code Online (Sandbox Code Playgroud)
这条线刚刚做了什么?在任何其他编程语言中,您将如何更改数组中的值,但在RobotC中,它的作用类似于函数调用.'motor'是一个数组还是一个对象?为什么在控制伺服系统时需要一个功能呢?
问题2:
在编程史上这是允许的吗?
motor[leftMotor] = motor[rightMotor] = speed = 127;
Run Code Online (Sandbox Code Playgroud)
那么这段代码会做什么呢?
speed = 127;
motor[rightMotor] = speed;
motor[leftMotor] = motor[rightMotor];
Run Code Online (Sandbox Code Playgroud)
要么
speed = 127;
motor[rightMotor] = 127;
motor[leftMotor] = 127;
Run Code Online (Sandbox Code Playgroud)