{"id":543,"date":"2023-03-30T17:41:34","date_gmt":"2023-03-30T09:41:34","guid":{"rendered":"https:\/\/doc.orionstar.com\/en\/?post_type=lsvr_kba&#038;p=543"},"modified":"2026-11-03T11:00:55","modified_gmt":"2026-11-03T03:00:55","slug":"basic-motion","status":"publish","type":"lsvr_kba","link":"https:\/\/doc.orionstar.com\/en\/knowledge-base\/basic-motion\/","title":{"rendered":"Basic Motion"},"content":{"rendered":"\n<p class=\"has-medium-font-size\"><strong>Linear Motion<\/strong><\/p>\n\n\n\n<p>Method name: goForward \/ goBackward<\/p>\n\n\n\n<p>How to call:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CommandListener motionListener = new CommandListener() {\n    @Override\n    public void onResult(int result, String message) {\n        if (\"succeed\".equals(message)) {\n            \/\/Call succeeded\n        } else {\n            \/\/Call failed\n        }\n    }\n};RobotApi.getInstance().goForward(reqId, speed, motionListener);\nRobotApi.getInstance().goForward(reqId, speed, distance, motionListener);\nRobotApi.getInstance().goForward(reqId, speed, distance, avoid, motionListener);\nRobotApi.getInstance().goBackward(reqId, speed, motionListener);\nRobotApi.getInstance().goBackward(reqId, speed, distance, motionListener);<\/pre>\n\n\n\n<p>Parameters:<\/p>\n\n\n\n<ul>\n<li>speed: Movement speed in m\/s. Range: 0 ~ 1.0. Speeds greater than 1.0 are treated as 1.0.<\/li>\n\n\n\n<li>distance: Movement distance in m. The value must be greater than 0.<\/li>\n\n\n\n<li>avoid: Whether to stop for obstacles while moving. Only forward movement supports stopping for obstacles.<\/li>\n<\/ul>\n\n\n\n<p>Supported platforms:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>GreetingBot<\/td><td>GreetingBot 2<\/td><td>GreetingBot Mini<\/td><td>LuckiBot<\/td><td>LuckiBot Pro<\/td><td>BigScreenBot<\/td><\/tr><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Rotation<\/strong><\/p>\n\n\n\n<p>Method name: turnLeft \/ turnRight Usage:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CommandListener rotateListener = new CommandListener() {\n    @Override\n    public void onResult(int result, String message) {\n        if (\"succeed\".equals(message)) {\n            \/\/Call succeeded\n        } else {\n            \/\/Call failed\n        }\n    }};RobotApi.getInstance().turnLeft(reqId, speed, rotateListener);\nRobotApi.getInstance().turnLeft(reqId, speed, angle, rotateListener);\nRobotApi.getInstance().turnRight(reqId, speed, rotateListener);\nRobotApi.getInstance().turnRight(reqId, speed, angle, rotateListener);<\/pre>\n\n\n\n<p>Parameters<\/p>\n\n\n\n<ul>\n<li><strong>speed<\/strong>: Rotation speed in degrees\/s. Range: 0 ~ 50 degrees\/s<\/li>\n\n\n\n<li><strong>angle<\/strong>: Rotation angle in degrees. The value must be greater than 0.<\/li>\n<\/ul>\n\n\n\n<p>Supported platforms:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>GreetingBot<\/td><td>GreetingBot 2<\/td><td>GreetingBot Mini<\/td><td>LuckiBot<\/td><td>LuckiBot Pro<\/td><td>BigScreenBot<\/td><\/tr><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Control the Robot by Setting Angular and Linear Speed<\/strong><\/p>\n\n\n\n<p>Method name: motionArcWithObstacles<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RobotApi.getInstance().motionArcWithObstacles(reqID,0.5,0.5,new CommandListener(){\n    @Override\n    public void onResult(int result, String message, String extraData) {\n    }\n    @Override\n    public void onStatusUpdate(int status, String data, String extraData) {\n    }\n});<\/pre>\n\n\n\n<p>Parameters<\/p>\n\n\n\n<ul>\n<li><strong>lineSpeed<\/strong>: Linear speed. Range: -1.2 ~ 1.2<\/li>\n\n\n\n<li><strong>angularSpeed<\/strong>: Angular speed. Range: -2 ~ 2<\/li>\n<\/ul>\n\n\n\n<p>Supported platforms:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>GreetingBot<\/td><td>GreetingBot 2<\/td><td>GreetingBot Mini<\/td><td>LuckiBot<\/td><td>LuckiBot Pro<\/td><td>BigScreenBot<\/td><\/tr><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Stop<\/strong><\/p>\n\n\n\n<p>Method name: stopMove Usage<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RobotApi.getInstance().stopMove(reqId, new CommandListener() {\n    @Override\n    public void onResult(int result, String message) {\n        if (\"succeed\".equals(message)) {\n            \/\/Call succeeded\n        } else {\n            \/\/Call failed\n        }\n    }\n});<\/pre>\n\n\n\n<p>Supported platforms:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>GreetingBot<\/td><td>GreetingBot 2<\/td><td>GreetingBot Mini<\/td><td>LuckiBot<\/td><td>LuckiBot Pro<\/td><td>BigScreenBot<\/td><\/tr><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong><em>Note: This API can only stop forward, backward and rotation movements. It cannot stop navigation or head movement.<\/em><\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Head Pan-Tilt Movement<\/strong><\/p>\n\n\n\n<p>Method name: moveHead Usage<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RobotApi.getInstance().moveHead(reqId, hMode, vMode, hAngle, vAngle, new CommandListener() {\n    @Override\n    public void onResult(int result, String message) {\n        try {\n            JSONObject json = new JSONObject(message);\n            String status = json.getString(\"status\");\n            if (Definition.CMD_STATUS_OK.equals(status)) {\n                \/\/Operation succeeded\n            }\n        } catch (JSONException | NullPointerException e) {\n            e.printStackTrace();\n        }\n    }\n});<\/pre>\n\n\n\n<p>Parameters:<\/p>\n\n\n\n<ul>\n<li><strong>hMode<\/strong>: Horizontal rotation mode. Absolute movement: absolute; relative movement: relative<\/li>\n\n\n\n<li><strong>vMode<\/strong>: Vertical movement mode. Absolute movement: absolute; relative movement: relative<\/li>\n\n\n\n<li><strong>hAngle<\/strong>: Horizontal rotation angle. Range: -120 ~ 120<\/li>\n\n\n\n<li><strong>vAngle<\/strong>: Vertical movement angle. Range: 0 ~ 90<\/li>\n<\/ul>\n\n\n\n<p>Supported platforms:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>GreetingBot<\/td><td>GreetingBot 2<\/td><td>GreetingBot Mini<\/td><td>LuckiBot<\/td><td>LuckiBot Pro<\/td><td>BigScreenBot<\/td><\/tr><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><td>No<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong><em>Note: Mind the physical limits of each robot model. Horizontal rotation mode has no effect on GreetingBot Mini and GreetingBot 2.<\/em><\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Reset the Pan-Tilt to Its Initial Angle<\/strong><\/p>\n\n\n\n<p>Method name: resetHead Usage<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">RobotApi.getInstance().resetHead(reqId, new CommandListener() {\n    @Override\n    public void onResult(int result, String message) {\n        try {\n            JSONObject json = new JSONObject(message);\n            String status = json.getString(\"status\");\n            if (Definition.CMD_STATUS_OK.equals(status)) {\n                \/\/Operation succeeded\n            }\n        } catch (JSONException | NullPointerException e) {\n            e.printStackTrace();\n        }\n    }\n});<\/pre>\n\n\n\n<p>Supported platforms:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>GreetingBot<\/td><td>GreetingBot 2<\/td><td>GreetingBot Mini<\/td><td>LuckiBot<\/td><td>LuckiBot Pro<\/td><td>BigScreenBot<\/td><\/tr><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><td>No<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n","protected":false},"excerpt":{"rendered":"<p>Linear Motion Method name: goForward \/ goBackward How to call: Parameters: Supported platforms: GreetingBot GreetingBot 2 GreetingBot Mini LuckiBot LuckiBot Pro BigScreenBot Yes Yes Yes Yes Yes No Rotation Method name: turnLeft \/ turnRight Usage: Parameters Supported platforms: GreetingBot GreetingBot 2 GreetingBot Mini LuckiBot LuckiBot Pro BigScreenBot Yes Yes Yes Yes Yes No Control the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":[],"lsvr_kba_cat":[6],"lsvr_kba_tag":[],"_links":{"self":[{"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba\/543"}],"collection":[{"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba"}],"about":[{"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/types\/lsvr_kba"}],"author":[{"embeddable":true,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/comments?post=543"}],"version-history":[{"count":2,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba\/543\/revisions"}],"predecessor-version":[{"id":964,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba\/543\/revisions\/964"}],"wp:attachment":[{"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/media?parent=543"}],"wp:term":[{"taxonomy":"lsvr_kba_cat","embeddable":true,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba_cat?post=543"},{"taxonomy":"lsvr_kba_tag","embeddable":true,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba_tag?post=543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}