Webots 소프트웨어에서 자주 사용하는 함수
1. wb_supervisor_node_get_field(WbNodeRef, "translation"):
지정된 노드에서 WbFieldRef를 찾습니다.'필드는 로봇이 전 세계(세계) 좌표계에 있는 위치를 나타낸다.
2. wb_supervisor_node_get_from_def():
장면 트리에서 "MY ROBOT"이라는 객체 검색 호출
1 WbNodeRef robot_node = wb_supervisor_node_get_from_def("MY_ROBOT");
2 WbFieldRef trans_field = wb_supervisor_node_get_field(robot_node, "translation");
3. wb_supervisor_field_get_sf_vec3f():
지정한 필드의 최신 값을 읽을 수 있습니다.센서나 실행기 기능과 달리 wbsupervisor_field _ *() 함수는 즉시 실행됩니다: 다음 wb 로 미루지 않습니다robot_step () 호출.
1 const double *trans = wb_supervisor_field_get_sf_vec3f(trans_field);
4. resetRobot():
move robot to initial position
5. 평가된 매개변수 세트
서로 다른 컨트롤러는 별도의 시스템 프로세스에서 실행되며, 서로 변수에 접근할 수 없습니다.평가가 필요한 매개 변수 집합을 지정하기 위해 다른 방식으로 소통해야 하지만.Webots Emitter와 Receiver를 사용하여 Supervisor와 다른 컨트롤러 간에 정보를 교환하는 것을 추천할 수 있습니다.예를 들어 전형적인 상황에서 주관자는 로봇 컨트롤러에 평가 파라미터(예를 들어 유전자형)를 보낼 것이다.로봇 컨트롤러가 그들의 수신기 s를 듣고 새로운 파라미터를 기다린다.일단 받으면 로봇 컨트롤러가 이 그룹의 매개 변수에 의해 지정된 행위를 실행하기 시작한다.이런 상황에서 주관자는 발사기를 필요로 하고 로봇마다 수신기를 필요로 한다.
6. 로봇을 리셋하는 방법
최적화 알고리즘을 사용할 때 매번 평가에 적응하기 전이나 이후에 로봇을 리셋해야 할 수도 있습니다.로봇을 리셋하는 몇 가지 방법이 있다.
wb 사용supervisor_field_set _ *() 및 wbsupervisor_simulation_physics_reset() 함수
wb 사용 가능supervisor_field_set ...() 및 wbsupervisor_simulation_physics_reset() 함수는 로봇의 위치, 방향 및 물리적 특성을 쉽게 재설정합니다. 다음 예는 다음과 같습니다.
1 // get handles to the robot's translation and rotation fields
2 WbNodeRef robot_node = wb_supervisor_node_get_from_def("MY_ROBOT");
3 WbFieldRef trans_field = wb_supervisor_node_get_field(robot_node, "translation");
4 WbFieldRef rot_field = wb_supervisor_node_get_field(robot_node, "rotation");
5
6 // reset the robot
7 const double INITIAL_TRANS[3] = { 0, 0.5, 0 };
8 const double INITIAL_ROT[4] = { 0, 1, 0, 1.5708 };
9 wb_supervisor_field_set_sf_vec3f(trans_field, INITIAL_TRANS);
10 wb_supervisor_field_set_sf_rotation(rot_field, INITIAL_ROT);
11 wb_supervisor_simulation_physics_reset();
상술한 방법의 단점은 로봇의 주요 위치와 방향만 리셋할 수 있다는 것이다.어떤 유형에 대한 최적화는 좋을 수 있지만 다른 유형에 대해서는 부족하다.리셋할 데이터 그룹에 더 많은 인자를 추가할 수 있지만, 모든 내용을 리셋하기가 어려울 때가 있습니다.서보 위치와 로봇 컨트롤러는 모두 이런 방식으로 리셋되지 않는다.의 서보 위치가 wb 로 재설정되어야 합니다.servo_set_position()과 로봇 컨트롤러는 관리 프로세스에서 로봇 컨트롤러 프로세스로 메시지를 보내야 한다(Webots로 송신기/수신기 통신 시스템을 리셋한다).로봇 컨트롤러 프로그램은 이런 소식을 처리하고 그에 상응하여 그 상태를 리셋할 수 있어야 한다.
7. wb_supervisor_simulation_revert():
이 기능은 물리적 시뮬레이션과 모든 컨트롤러를 처음부터 다시 시작합니다.이런 방법으로 모든 것이 물리적 위치, 서보 위치, 컨트롤러를 포함하여 리셋될 것이다.하지만 이 함수도 다시 호출wbsupervisor_simulation_revert ()의 컨트롤러입니다. 이것은 보통 최적화 알고리즘을 실행하는 컨트롤러이기 때문에 최적화 상태를 잃어버립니다.따라서 이런 기술을 사용하기 위해서는 최적화 알고리즘의 완전한 상태를 보존하고 회복할 수 있는 함수를 개발할 필요가 있다.wb 호출 중supervisor_simulation_revert() 이전에 최적화 상태를 저장하고 Supervisor 시 컨트롤러를 다시 불러와서 다시 시작해야 합니다.
8. wbu_motion_new,wbu_motion_delete :
동작 파일 핸들 가져오기 및 놓기
1 #include
2
3 WbMotionRef wbu_motion_new(const char *filename);
4
5 void wbu_motion_delete(WbMotionRef motion);
filename에서는 절대 경로나 컨트롤러 디렉터리에 대한 경로로 지정할 수 있습니다.
9. wbu_motion_play,wbu_motion_stop,wbu_motion_set_loop,wbu_motion_set_reverse :
동작 파일 재생 제어하기
1 #include
2 void wbu_motion_play(WbMotionRef motion);
3 void wbu_motion_stop(WbMotionRefmotion);
4 void wbu_motion_set_loop(WbMotionRef motion, bool loop);
5 void wbu_motion_set_reverse(WbMotionRefmotion, bool reverse);
wb_robot_step()
동작 파일의 기능 단계와 자세 간격은 다를 수 있습니다.이 경우 Webot은 선형 보간을 통해 중간 관절 위치를 계산합니다. wbu_motion_stop()
지정된 동작의 재현은 중단되지만 현재 위치는 유지됩니다.중단 후 재생은 계속할 수 있습니다wbu_motion_play()
.이
wbu_motion_set_loop()
링 모드의 지정된 운동의루프 모드가 true
인 경우 파일이 파일의 끝이나 시작(역방향 모드)에 도달할 때 작업이 반복됩니다.예를 들어 로봇이 일련의 절차를 반복해서 걷는 순서를 반복하도록 하는 순환 모드를 사용할 수 있다.동작 재생 시 루프 모드를 변경할 수 있습니다. wbu_motion_set_reverse()
후진 모드에서 지정한 동작을 설정합니다.반전 모드가 true
인 경우 동작 파일이 뒤로 재생됩니다.예를 들어 역방향 모드를 사용하면 보행 운동을 뒤로 걷는 운동으로 바꿀 수 있다.이 역방향 모드는 변경할 수 있지만 운동은 치는 것으로 이 경우 동작은 현재 위치에서 되돌아온다.기본적으로 동작의 주기 모드와 역방향 모드는
false
입니다.10. wbu_motion_is_over,wbu_motion_get_duration,wbu_motion_get_time,wbu_motion_set_time :
재생 위치 제어
1 #include
2 bool wbu motion_is_over(WbMotionRef motion);
3 int wbu_motion_get_duration(WbMotionRefmotion);
4 int wbu_motion_get_time(WbMotionRef motion, bool loop);
5 void wbu_motion_set_time(WbMotionRefmotion, int t);
재생 위치가 동작 파일의 끝에 도달했을 때 이
wbu_motion_is_over()
기능은 true
되돌아옵니다.마지막 자세가 이 기능을 사용하여 모터 노드에 전송되었을 때wb_motor_set_position()
.그러나 이것은 전기 기계가 아직 규정된 위치에 이르지 않았다는 것을 의미하지 않는다.그것들은 매우 느리거나 장애물, 로봇, 벽, 마루 등에 의해 막힐 수 있다.동작이 루프 모드인 경우 이 기능은 항상 반환됩니다false
.반전 모드에 따라 wbu_motion_is_over()
가 달라집니다.wbu_motion_is_over()
가 되돌아올 때 역방향 모드true
와 리셋 위치는 파일의 시작이나 역방향 모드true
와 리셋 위치는 파일의 끝이다.이 함수는 운동 파일의 총 지속 시간을 밀리초 단위로 되돌려줍니다.
이
false
함수는 밀리초 단위로 현재 재생 위치를 되돌려줍니다.이
wbu_motion_get_duration()
기능은 재생 위치를 제때에 변경할 수 있다.이것은 사용자가 앞뒤로 건너뛸 수 있도록 한다.재생 중이든 중지 중이든 시간 위치는 변경할 수 있습니다.최소값은 0(동작 시작), 최대값은 함수가 반환하는 값wbu_motion_get_time()
(동작 끝)입니다.시간 위치는 밀리초로 표시됩니다11. wb_robot_step():
Webots와 컨트롤러 사이의 센서와 실행기 데이터를 동기화할 수 있습니다.하면, 만약, 만약...robot_step () 기능이 호출되지 않으면 Webots에서 작동하지 않을 뿐만 아니라 컨트롤러의 센서도 업데이트되지 않습니다.
1 int wb_robot_step(int duration)
이duration 매개 변수는 wb 에서 밀리초 단위의 시간을 지정합니다robot_step () 함수가 되돌아오기 전에 이 시간량을 시뮬레이션해야 합니다.이것은 실시간이 아니라 가상의 (시뮬레이션) 시간이기 때문에 시스템을 호출하는 시간sleep () 같지 않습니다.시뮬레이션과 실행 모드의 복잡도에 따라 이 기능은 곧 되돌아올 수 있다.그것이 돌아왔을 때, 시뮬레이션 시간의 요청 지속 시간이 지났습니다.다시 말하면 물리적 운행이 지정한 지속 시간: 대상이 이동할 수 있고 모터가 작동할 수 있으며 센서 값이 변할 수 있다.duration 매개 변수는 WorldInfo 배수여야 합니다.basicTimeStep.
이 함수가 -1을 반환하면 Webots가 컨트롤러를 종료하려고 합니다.이러한 상황은 사용자가 Revert 버튼을 클릭하거나 Webots를 종료할 때 발생합니다.따라서 만약 코드가 데이터 파일을 새로 고치거나 닫는 등 정리 작업을 해야 한다면, 이 반환 값을 테스트하고 적당한 행동을 취해야 한다.컨트롤러 종료는 거부할 수 없습니다: 1초 후에 컨트롤러가 Webots에 의해 종료됩니다.그래서 1초만 청소에 사용할 수 있습니다.
12. wb_robot_get_device :
장치에 대한 고유 식별자 가져오기
13. wb_robot_get_device_by_index :
자성을 통해 장치 가져오기
14. wb_robot_battery_sensor_enable,wb_robot_battery_sensor_disable,wb_robot_get_battery sampling_period,wb_robot_battery_sensor_get_value :
배터리 센서 기능
이런 기능들은 당신으로 하여금 로봇 배터리의 현재 에너지 수준을 측정하게 할 수 있다.우선, 이 wb 를 호출해야 합니다robot_battery_sensor_enable () 기능은 배터리 센서 측정을 사용합니다.이 samplingperiod 매개 변수는 밀리초로 표시되며 측정을 실행하는 주파수를 정의합니다.배터리 센서 사용 후 이 wb 호출을 통해robot_battery_sensor_get_value () 함수는 값을 읽을 수 있습니다.반환 값은 J(J)로 표시된 현재 배터리 에너지 수준에 해당합니다.
이 wbrobot_battery_sensor_disable () 기능은 배터리 센서 측정을 정지하는 데 사용해야 합니다.
이 wbrobot_get_battery_sampling_period () 함수는 함수가 지정한 시간대wb 를 되돌려줍니다robot_battery_sensor_enable (), 장치가 비활성화되면 0을 되돌려줍니다.
15. wb_robot_get_basic_time_step:
WorldInfo 노드의 basicTimestep 필드 값을 반환합니다.
16. wb_robot_get_mode :
조작 모드, 시뮬레이션 및 실제 로봇 획득
17. wb_robot_get_name :
로봇 노드에 정의된 이름을 되돌려줍니다
전재 대상:https://www.cnblogs.com/guojun-junguo/p/9077293.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.